package charpter06;

/**
 * Created by Miracle yaochengwei on 2022/5/2 15:02
 */
public class Stars {
    public static void main(String[] args) {
        /*

			    *
			  *  *
			 *    *
			********
			思路分析
化繁为简
1.  先打印一个矩形
*****
*****
*****
*****
*****
2.  打印半个金字塔
        *    /第 1 层 有 1 个*
		**   	//第 2 层 有 2 个*
		***		//第 3 层 有 3 个*
        ****	//第 4 层 有 4 个*
        *****	//第 5 层 有 5 个*
         */

        /**
         * 3.  打印整个金字塔
         * 		*       //第 1 层 有 1 个*	2 * 1 -1	有 4=(总层数-1)个空格
         * 	   ***      //第 2 层 有 3 个*	2 * 2 -1	有 3=(总层数-2)个空格
         * 	  *****     ////第 3 层 有 5 个*	2 * 3 -1	有 2=(总层数-3)个空格
         * 	 *******    //第 4 层 有 7 个*	2 * 4 -1	有 1=(总层数-4)个空格
         * 	*********   //第 5 层 有 9 个*	2 * 5 -1	有 0=(总层数-5)个空格
         *
         * 	4.  打印空心的金字塔 [最难的]
         * 	    *       //第 1 层 有 1 个 * 当前行的第一个位置是 *, 最后一个位置也是 *
         * 	   * *      //第 2 层 有 2 个*	当前行的第一个位置是*,最后一个位置也是*
         * 	  *   *     //第 3 层 有 2 个*	当前行的第一个位置是*,最后一个位置也是*
         * 	 *     *    //第 4 层 有 2 个*	当前行的第一个位置是*,最后一个位置也是*
         * 	*********   //第 5 层 有 9 个*	全部输出*
         *
         * 	先死后活
          */
//5  层数做成变量 int totalLevel = 5;

//小伙伴 技术到位，就可以很快的把代码写出
    int totalLevel = 20;//层数
        for (int i = 1;i<=totalLevel;i++){//i 表示层数
            //在输出*之前，还有输出 对应空格 = 总层数-当前层
            for (int k =1;k<=totalLevel - i;k++){
                System.out.print(" ");
            }
            //控制打印每层的*个数
            for (int j = 1;j<=2*i -1;j++){
                //第一个位置，指的是，每一行第一个，最后一个位置是，每一行最后一个
                //当前行的第一个位置是*,最后一个位置也是*, 最后一层全部 *
                if (j==1||j==2*i-1||i==totalLevel){
                    System.out.print("*");
                }else {//其他情况输出空格
                    System.out.print(" ");
                }
            }
            //每打印完一层的*后，就换行 println 本身会换行
            System.out.println("");
        }
}
}
